package fquery

import (
	"gitee.com/bitwormhole/afsviewer/app/data/vo"
	"github.com/starter-go/afs"
	"github.com/starter-go/base/lang"
	"github.com/starter-go/mimetypes"
)

// ID ...
type ID int64

// FileMode 以文本形式表示文件模式，例如："drwxrwxrwx"
type FileMode string

// Item ...
type Item struct {
	URI  string `json:"uri"` // 这个字段是可选的
	Name string `json:"name"`

	Size        int64    `json:"size"`
	Mode        FileMode `json:"mode"`
	ContentType MIMEType `json:"type"`
	Dir         bool     `json:"dir"`
	File        bool     `json:"file"`
	Link        bool     `json:"link"`

	CreatedAt lang.Time `json:"created_at"`
	UpdatedAt lang.Time `json:"updated_at"`
}

// TypeInfo ...
type TypeInfo struct {

	// Name  MIMEType
	// Icon  string
	// Label string

	mimetypes.Info

	Suffix string `json:"suffix"`
}

// Query ...
type Query struct {
	URI      afs.URI  `json:"uri"`      // 完整的 URI
	Ref      afs.URI  `json:"ref"`      // Ref-URI, 如果 URI 的值是一个相对位置，则以 Ref 为参照基础
	Location Location `json:"location"` // 解析后的 URI

	Self  *Item                  `json:"self"`
	Items []*Item                `json:"items"`
	Types map[MIMEType]*TypeInfo `json:"types"`
}

// VO ...
type VO struct {
	vo.Base

	Query Query `json:"fquery"`
}
